package com.mt.mtyx.common.utils.generate.generate.config;

import java.util.Set;

/**
 * @author WMT
 * @Date 2023/5/26 17:27
 */
public class OtherCodeConfig {

    /**
     * 其他包包名
     */
    private String other;

    /**
     * 其他包的名称 用.代表下一级目录
     */
    private String otherPack;

    /**
     * 是否开启lombok
     */
    private boolean enableLombok;

    /**
     * 是否开启序列化
     */
    private boolean enableSerialVersionUID;

    /**
     * 是否忽略父类属性
     */
    private boolean ignoredSupperField;

    /**
     * 是否开启tosString方法
     */
    private boolean enableToString;

    /**
     * other名称
     */
    private String otherName;

    /**
     * 模板名称
     */
    private String template;

    /**
     * vo格式
     */
    private String otherFormat = "%s";

    /**
     * 父类包名
     */
    private String supperCLass;

    /**
     * vo 导包
     */
    private Set<String> importPackage;

    public String getOther() {
        return other;
    }

    public OtherCodeConfig other(String other) {
        this.other = other;
        return this;
    }

    public OtherCodeConfig enableLombok(boolean enableLombok) {
        this.enableLombok = enableLombok;
        return this;
    }

    public OtherCodeConfig enableSerialVersionUID(boolean enableSerialVersionUID) {
        this.enableSerialVersionUID = enableSerialVersionUID;
        return this;
    }

    public boolean isIgnoredSupperField() {
        return ignoredSupperField;
    }

    public OtherCodeConfig enableIgnoredSupperField(boolean ignoredSupperField) {
        this.ignoredSupperField = ignoredSupperField;
        return this;
    }

    public OtherCodeConfig enableToString(boolean enableToString) {
        this.enableToString = enableToString;
        return this;
    }

    public OtherCodeConfig otherFormat(String format) {
        this.otherFormat = format;
        return this;
    }

    public OtherCodeConfig supperCLass(String supperCLass) {
        this.supperCLass = supperCLass;
        return this;
    }

    public OtherCodeConfig supperCLass(Class<?> clazz) {
        this.supperCLass = clazz.getName();
        return this;
    }

    public OtherCodeConfig ignoredSupperField(boolean ignoredSupperField) {
        this.ignoredSupperField = ignoredSupperField;
        return this;
    }

    public OtherCodeConfig importPackage(Set<String> importPackage) {
        this.importPackage = importPackage;
        return this;
    }

    public OtherCodeConfig otherName(String otherName) {
        this.otherName = otherName;
        return this;
    }

    public Set<String> getImportPackage() {
        return importPackage;
    }

    public boolean isEnableToString() {
        return enableToString;
    }

    public boolean isEnableLombok() {
        return enableLombok;
    }

    public boolean isEnableSerialVersionUID() {
        return enableSerialVersionUID;
    }

    public String getOtherName() {
        return otherName;
    }

    public String getOtherFormat() {
        return otherFormat;
    }

    public String getSupperCLass() {
        return supperCLass;
    }

    public String getOtherPack() {
        return otherPack;
    }

    public OtherCodeConfig otherPack(String otherPack) {
        this.otherPack = otherPack;
        return this;
    }

    public String getTemplate() {
        return template;
    }

    public OtherCodeConfig template(String template) {
        this.template = template;
        return this;
    }
}
